<?php
/**
 * Created by PhpStorm.
 * User: 76907
 * Date: 2017/7/10
 * Time: 23:10
 */
/*冒泡排序*/
function bubble_sort(&$arr){
    $len = count($arr);
    for($i=0;$i<$len;$i++){
        for($j=1;$j<$len-$i;$j++){
            if($arr[$j-1]>$arr[$j]){
                $temp = $arr[$j-1];
                $arr[$j-1] = $arr[$j];
                $arr[$j] = $temp;
            }
        }
    }
}
$arr = array(10,2,3,45,56,77,75,33,22,1);
bubble_sort($arr);

/*顺序查找的实现*/
function seq_sch($arr,$n,$k)
{
    for($i=0;$i<$n;$i++){
        if($arr[$i]==$k) break;
        if($i<$n){
            return $i;
        }else{
            return -1;
        }
    }
}

/*二分查找*/
function binarySearch(&$array, $findVal, $leftIndex, $rightIndex){
$middleIndex = round(($rightIndex + $leftIndex) / 2);
if ($leftIndex > $rightIndex) {
    echo '查无此数<br/>';
    return;
}
//如果要查询的这个数  大于中间的数  则从中间索引开始查询
if ($findVal > $array[$middleIndex]) {
    binarySearch($array, $findVal, $middleIndex + 1, $rightIndex);
} elseif ($findVal < $array[$middleIndex]) {
    binarySearch($array, $findVal, $leftIndex, $middleIndex - 1);
} else {
    echo "找到数据:index=$middleIndex;value=$array[$middleIndex]<br/>";
    if ($array[$middleIndex + 1] == $array[$middleIndex] && $leftIndex < $rightIndex) {
        binarySearch($array, $findVal, $middleIndex + 1, $rightIndex);
    }
    if ($array[$middleIndex - 1] == $array[$middleIndex] && $leftIndex < $rightIndex) {
        binarySearch($array, $findVal, $leftIndex, $middleIndex - 1);
    }
}
}

/*文件的遍历*/
function scanDir1($path,$leave=0)
{
    if(is_dir($path)){
        $res=opendir($path);
        while(false!==($file=readdir($res))){
            if($file=='.'||$file=='..') continue;
            $str=str_repeat('&nbsp',$leave*10);
            $file=iconv('gbk','utf-8',$file);
            echo $str.$file.'<br/>';
            $now=$path.'/'.$file;
            if(is_dir($now)){
                scanDir1($now,$leave+1);
            }
        }
        closedir($res);
    }else{
        echo '请指定一个有效的路径';
    }
}
//scanDir1('./Frame');

//final类不能被继承
class MyClass {
    //属性不能使用final
    protected  $test=1;

    final public function finalPublic() {
        echo __METHOD__;
    }
    //final方法不能被重写
    final private function finalPrivate() {
        echo __METHOD__;
    }

    protected function finalProtected () {
        echo __METHOD__;
    }
}

//可调用父类可继承的方法MyClass::finalPublic() MyClass::finalProtected() 但 MyClass::finalPrivate()将不被继承
//因为重写了父类的final修饰的方法 所以会报错
class ErrorSubClass extends Myclass {
    final protected function finalProtected () {
        echo __METHOD__;
    }

    //无法重写  因为父类定义为最终方法
    public function finalPublic() {
        echo __METHOD__;
    }
}

class danli
{
    private function __construct(){}
    private function __clone(){}
    private static $link=null;

    public static function getIns()
    {
        if(self::$link==null){
            return self::$link=new self;
        }
        return self::$link;
    }
}

